﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business.Entities;
using Business.Logic;

namespace UI.Desktop
{
    public partial class MenuPrincipalDesktop : UI.Desktop.MdiFormPadre
    {
        //programar el uso de botones y los botones q faltan....

        Usuario _UsuarioActual;
        Persona _PersonaActual;

        public Usuario UsuarioActual
        {
            get { return _UsuarioActual; }
            set { _UsuarioActual = value; }
        }

        public Persona PersonaActual
        {
            get { return _PersonaActual; }
            set { _PersonaActual = value; }
        }

        public MenuPrincipalDesktop(Usuario UsuarioEncontrado)
        {
            InitializeComponent();
            UsuarioActual = UsuarioEncontrado;
        }

        private void MenuPrincipalDesktop_Load(object sender, EventArgs e)
        {
            MenuStrip control = (MenuStrip)this.MdiParent.Controls["menuStrip1"];
            control.Items["tsmiIniciar"].Visible = false;
            if (UsuarioActual.Habilitado == true)
            {
                BuscarUsuarioPersona();
                switch(PersonaActual.TipoPersona)
                {
                    case Persona.TiposPersonas.Administrador: 
                        lBienvenida.Text += " Aministrador " +
                            PersonaActual.Nombre + " " + PersonaActual.Apellido;
                        lLUno.Text = "Abmc Especialidades";
                        lLDos.Text = "Abmc Planes";
                        lLTres.Text = "Abmc Alumnos, Docentes o Administrativos";
                        lLCuatro.Text = "Abmc Materias";
                        lLCinco.Text = "Abmc Comisiones";
                        lLSeis.Text = "Abmc Cursos";
                        lLSiete.Text = "Salir";
                        break;
                    case Persona.TiposPersonas.Alumno:
                        lBienvenida.Text = " Alumno " + PersonaActual.Nombre + " " +
                            PersonaActual.Apellido;
                        lLUno.Text = "Inscripción";
                        lLDos.Text = "Consulta de estado académico";
                        lLTres.Text = "Modificación y consulta de sus datos personales";
                        lLCuatro.Text = "Salir";
                        lLCinco.Visible = false;
                        lLSeis.Visible = false;
                        lLSiete.Visible = false;
                        lCinco.Visible = false;
                        lSeis.Visible = false;
                        lSiete.Visible = false;
                        break;
                    case Persona.TiposPersonas.Profesor:
                        lBienvenida.Text = " Profesor " + PersonaActual.Nombre + " " +
                            PersonaActual.Apellido;
                        lLUno.Text = "Consultar sus cursos e inscriptos";
                        lLDos.Text = "Registrar condiciones de alumnos inscriptos";
                        lLTres.Text = "Modificación y consulta de sus datos personales";
                        lLCuatro.Text = "Salir";
                        lLCinco.Visible = false;
                        lLSeis.Visible = false;
                        lLSiete.Visible = false;
                        lCinco.Visible = false;
                        lSeis.Visible = false;
                        lSiete.Visible = false;
                        break;
                        
                }
                lLUno.Focus();

            }
            else
            {
                MessageBox.Show("No esta habilitado para utilizar el Sistema de Gestión Académico",
                    "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                BuscarUsuarioPersona();
                switch (PersonaActual.TipoPersona)
                {
                    case Persona.TiposPersonas.Administrador:
                        lBienvenida.Text += " Aministrador " +
                            PersonaActual.Nombre + " " + PersonaActual.Apellido;
                        lLUno.Text = "Abmc Especialidades"; lLUno.Enabled = false;
                        lLDos.Text = "Abmc Planes"; lLDos.Enabled = false;
                        lLTres.Text = "Abmc Alumnos, Docentes o Administrativos"; lLTres.Enabled = false;
                        lLCuatro.Text = "Abmc Materias"; lLCuatro.Enabled = false;
                        lLCinco.Text = "Abmc Comisiones"; lLCinco.Enabled = false;
                        lLSeis.Text = "Abmc Cursos"; lLSeis.Enabled = false;
                        lLSiete.Text = "Salir";
                        break;
                    case Persona.TiposPersonas.Alumno:
                        lBienvenida.Text = " Alumno " + PersonaActual.Nombre + " " +
                            PersonaActual.Apellido;
                        lLUno.Text = "Inscripción"; lLUno.Enabled = false;
                        lLDos.Text = "Consulta de estado académico"; lLDos.Enabled = false;
                        lLTres.Text = "Modificación y consulta de sus datos personales"; lLTres.Enabled = false;
                        lLCuatro.Text = "Salir";
                        lLCinco.Visible = false;
                        lLSeis.Visible = false;
                        lLSiete.Visible = false;
                        lCinco.Visible = false;
                        lSeis.Visible = false;
                        lSiete.Visible = false;
                        break;
                    case Persona.TiposPersonas.Profesor:
                        lBienvenida.Text = " Profesor " + PersonaActual.Nombre + " " +
                            PersonaActual.Apellido;
                        lLUno.Text = "Consultar sus cursos e inscriptos"; lLUno.Enabled = false;
                        lLDos.Text = "Registrar condiciones de alumnos inscriptos"; lLDos.Enabled = false;
                        lLTres.Text = "Modificación y consulta de sus datos personales"; lLTres.Enabled = false;
                        lLCuatro.Text = "Salir";
                        lLCinco.Visible = false;
                        lLSeis.Visible = false;
                        lLSiete.Visible = false;
                        lCinco.Visible = false;
                        lSeis.Visible = false;
                        lSiete.Visible = false;
                        break;

                }
            }

        }

        private void BuscarUsuarioPersona()
        {
            try
            {
                UsuarioLogic UsrLogic = new UsuarioLogic();
                PersonaActual = UsrLogic.GetOnePersona(UsuarioActual.ID);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        #region Eventos_Salir

        private void lLCuatro_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//correcto
        {
            if (lLCuatro.Text != "Salir")
            {
                MateriasD abmcMaterias = new MateriasD();
                abmcMaterias.MdiParent = this.MdiParent;
                abmcMaterias.Show();
            }
            else
            {
                MenuStrip control = (MenuStrip)this.MdiParent.Controls["menuStrip1"];
                control.Items["tsmiIniciar"].Visible = true;
                this.Dispose();
            }
        }
        #endregion

        #region Eventos_Acceso

        private void lLUno_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//correcto
        {
            switch (PersonaActual.TipoPersona)
            {
                case Persona.TiposPersonas.Administrador:
                    EspecialidadesD abmcEspecialidades = new EspecialidadesD();
                    abmcEspecialidades.MdiParent = this.MdiParent;
                    abmcEspecialidades.Show();
                    break;
                case Persona.TiposPersonas.Alumno:
                    Inscripcion inscripAlumno = new Inscripcion(PersonaActual);
                    inscripAlumno.MdiParent = this.MdiParent;
                    inscripAlumno.Show();
                    break;
                case Persona.TiposPersonas.Profesor:
                    InscripcionesProfesor inscripProfesor = new InscripcionesProfesor(PersonaActual);
                    inscripProfesor.MdiParent = this.MdiParent;
                    inscripProfesor.Show();
                    break;
            }
        }

        private void lLDos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//falta fun prof
        {
            switch (PersonaActual.TipoPersona)
            {
                case Persona.TiposPersonas.Administrador:
                    PlanesD abmcPlan = new PlanesD();
                    abmcPlan.MdiParent = this.MdiParent;
                    abmcPlan.Show();
                    break;
                case Persona.TiposPersonas.Alumno:
                    EstadoAcademico EstAc = new EstadoAcademico(PersonaActual);
                    EstAc.MdiParent = this.MdiParent;
                    EstAc.Show();
                    break;
                case Persona.TiposPersonas.Profesor:
                    
                    break;

            }
        }

        private void lLTres_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//correcto
        {
            switch (PersonaActual.TipoPersona)
            {
                case Persona.TiposPersonas.Administrador:
                    PersonasD abmcPersona = new PersonasD();
                    abmcPersona.MdiParent = this.MdiParent;
                    abmcPersona.Show();
                    break;
                case Persona.TiposPersonas.Alumno:
                    UsuariosDesktop mcUsAl = new UsuariosDesktop(UsuarioActual, PersonaActual);
                    mcUsAl.MdiParent = this.MdiParent;
                    mcUsAl.Show();
                    break;
                case Persona.TiposPersonas.Profesor:
                    UsuariosDesktop mcUsPro = new UsuariosDesktop(UsuarioActual, PersonaActual);
                    mcUsPro.MdiParent = this.MdiParent;
                    mcUsPro.Show();
                    break;

            }
        }

        private void lLCinco_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//correcto
        {
            ComisionesD abmcComisiones = new ComisionesD();
            abmcComisiones.MdiParent = this.MdiParent;
            abmcComisiones.Show();
        }

        private void lLSeis_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//correcto
        {
            CursosD abmcCursos = new CursosD();
            abmcCursos.MdiParent = this.MdiParent;
            abmcCursos.Show();
        }
        #endregion

        private void lLSiete_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//correcto
        {
            MenuStrip control = (MenuStrip)this.MdiParent.Controls["menuStrip1"];
            control.Items["tsmiIniciar"].Visible = true;
            this.Dispose();
        }

    }
}
